#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <time.h>

int main()
{
	int fd = open("1.txt",O_RDWR | O_CREAT,0666);
	if(-1 == fd)
	{
		printf("创建文件失败:%m\n");
		return -1;
	}

	ftruncate(fd,sizeof(int));

	int* p = mmap(0,4,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0);
	if(((void*) -1) == p)
	{
		printf("映射虚拟内存失败:%m\n");
		close(fd);
		return -2;
	}


	*p = 0;
	if(fork())
	{
		//显示随机数
		srand(time(NULL));//设置随机算子
		while(1)
		{
			while(*p);
			printf("%8d\n",rand()%100000000);
			usleep(1000);
		}

	}
	else
	{
		//控制它暂停
		char c;
		while(1)
		{
			read(0,&c,1);
			if(c == ' ')
			{
				if(*p)
				{
					*p = 0;
				}
				else
				{
					*p = 1;
				}
			}
		}
	}



	return 0;
}